SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROC [dbo].[SP_TXMVTO_CNTB_Q42]  
/*-------------------------------------------------------------------*/
/*----- Empresa           : OFISIS S.A.                          ----*/
/*----- Cliente           : OFISIS S.A.                          ----*/
/*----- Sistema           : Contabilidad                         ----*/
/*----- Modulo            : Empresa                              ----*/
/*----- Programa          : Impresi?n Voucher Ajuste X Dc Docs	 ----*/
/*----- (EN LINEA 'ORI')					 ----*/
/*----- Nombre            : SP_TXMVTO_CNTB_Q42                   ----*/
/*----- Script            : TXMVTO_CNTB                          ----*/
/*----- Desarrollado por  : PDGV                                 ----*/
/*----- Fecha             :                                      ----*/
/*----- Base de Datos     : MS SQL Server                        ----*/
/*----- Version BD        : 8.0                                  ----*/
/*-------------------------------------------------------------------*/
/*-------------------------------------------------------------------*/
/*----- Modificado 4 por : pdgv                                  ----*/
/*----- Fecha Modifica   : 30/06/2006                            ----*/
/*----- Detalle Modifica : CASO impresion modo tabla se muestra	 ----*/
/*----- la glosa de cada sec de asto				 ----*/
/*-------------------------------------------------------------------*/
/*----- Modificado 5 por : Rocio Caldas				 ----*/
/*----- Fecha Modifica   : 27/08/2007                            ----*/
/*----- Detalle Modifica : CASO impresion modo tabla y pantall se----*/
/*-----	muestra la descripcion de la cuenta			 ----*/
/*-------------------------------------------------------------------*/
/*-------------------------------------------------------------------*/
/*----- Modificado 3 por : pdgv                                  ----*/
/*----- Fecha Modifica   : 28/06/2006                            ----*/
/*----- Detalle Modifica : se valido que al sacar la glosa saque ----*/
/*----- de los secs apr o DIG					 ----*/
/*-------------------------------------------------------------------*/
/*-------------------------------------------------------------------*/
/*-------------------------------------------------------------------*/
/*----- Drop proc SP_TXMVTO_CNTB_Q42                             ----*/
/*----- Grant all on SP_TXMVTO_CNTB_Q42 to PUBLIC                ----*/
/*----- SP_TXMVTO_CNTB_Q42 EXEC SP_TXMVTO_CNTB_Q42 '01',1,'001',
	'002','0000000016','','','10/13/2004',10, 2004,'', '', '',
	'', 3700, 3700						 ----*/                  
/*-------------------------------------------------------------------*/                  
@ISCO_EMPR           TD_VC_002,                  
@INNU_CNTB_EMPR      TD_IN_001_CONT,                  
@ISCO_UNID_CNTB      TD_VC_003,                  
@ISCO_OPRC_CNTB      TD_VC_003,                  
@ISNU_ASTO           TD_VC_010,                  
@ISCO_CNTA_EMPR      TD_VC_020_CNTA,                  
@ISST_CNTA_NATU      TD_VC_003,  -- 'COM' 0 'VEN'                
@IDFE_ASTO_CNTB      TD_DT_001,                  
@INNU_MESE           TD_IN_002_MESE,                  
@INNU_ANNO           TD_IN_004_ANNO,                  
@ISTI_AUXI_EMPR      TD_VC_001,                  
@ISCO_AUXI_EMPR      TD_VC_020,                   
@ISTI_DOCU           TD_VC_003,                  
@ISNU_DOCU           TD_VC_020,                    
@INTO_CARG           TD_NU_016_004,                    
@INTO_ABON           TD_NU_016_004,  
@ISTI_REPO           TD_VC_001                                      
      
As      
      
Declare      
 @VDFE_VOUC          TD_DT_001,      
 @VDFE_CAMB          TD_DT_001,      
 @CNIM_ORIG_SALD     TD_NU_016_004,      
 @CNIM_SOLE_SALD     TD_NU_016_004,      
 @CSTI_DOCU          TD_VC_003,      
 @CSNU_DOCU          TD_VC_020,                  
 @CDFE_DOCU          TD_DT_001,                  
@VNIM_ORIG_MVTO     TD_NU_016_004,                  
 @VNIM_SOLE_MVTO     TD_NU_016_004,                  
 @VNTO_SALD_ORIG     TD_NU_016_004,                  
 @VNTO_SALD_SOLES    TD_NU_016_004,                  
 @VNTO_AJUS          TD_NU_016_004,                  
 @VSCO_CNTA_GANA     TD_VC_020_CNTA,                  
 @VSCO_CNTA_PERD     TD_VC_020_CNTA,                  
 @VSTI_OPER          TD_VC_003,                  
 @VNTO_CNTA_GANA     TD_NU_016_004,                  
 @VNTO_CNTA_PERD     TD_NU_016_004,                  
 @VNTO_GANA_PEND     TD_NU_016_004,                  
 @VNTO_PERD_PEND     TD_NU_016_004,                  
 @VNNU_SECU          TD_IN_002,                   
 @VNNU_SECU_PEND     TD_IN_002,                   
 @VSCO_MONE_CNTB     TD_VC_003,                  
 @VDFE_DOCU   TD_DT_001,             
 @CSTI_AUXI_EMPR     TD_VC_001,                  
 @CSCO_AUXI_EMPR     TD_VC_020,                  
 @VSID_GANA_CAMB     TD_VC_003,                  
 @VSID_PERD_CAMB     TD_VC_003,                  
 @VNFA_CMPR_REFE     TD_NU_015_006,                  
 @VNFA_VNTA_REFE     TD_NU_015_006,                  
 @VDFE_ASTO_CNTB   TD_DT_001,                  
 @VNFA_CAMB_DIAR     TD_NU_015_006,                  
 @VSST_CNTA          TD_VC_001,                  
 @VNFA_CMPR_CNTA     TD_NU_015_006,                  
 @VNFA_VNTA_CNTA     TD_NU_015_006,                  
 @VNFA_CMPR_CNTB     TD_NU_015_006,                  
 @VNFA_VNTA_CNTB     TD_NU_015_006,                  
 @VSCO_MONE_CNTA     TD_VC_003,                  
 @VSCO_GANA_DIFE     TD_VC_020,                  
 @VSCO_PERD_DIFE     TD_VC_020,                  
 @VSCO_CNTA_AJUS     TD_VC_020, -- CUENTA SE ENVIA A PROC SP_TXMVTO_CNTB_I34 (GESTION)                 
 @VSST_AUXI_EMPR     TD_VC_001,                  
 @VSTI_AUXI_DCGA     TD_VC_001,                  
 @VSCO_AUXI_DCGA     TD_VC_020,                  
 @VSTI_AUXI_DCPE     TD_VC_001,                  
 @VSCO_AUXI_DCPE     TD_VC_020,                  
 @VSST_FLAG          TD_VC_001,                  
 @VNTO_CARG_0001     TD_NU_016_004,                  
 @VNTO_ABON_0001     TD_NU_016_004,                  
            
 @VSID_0006          TD_VC_003,                  
 @VSID_BNCO          TD_VC_003,                  
                  
---- Multimoneda                  
 @VSST_CNTA_CAMB     TD_VC_003,                  
 @VNIM_MVTO_ORI2     TD_NU_016_004,                  
 @VNFA_CAMB          TD_NU_015_006,                  
                  
 ---- Cursor CU_TXMVTO_CNTB_I10_2                  
 @CSCO_EMPR_0002     TD_VC_002,                  
 @CSCO_CNTA_EMPR     TD_VC_020,                  
 @CNNU_CNTB_EMP2     TD_IN_001_CONT,                  
 @VDFE_ASTO_CNT2     TD_DT_001,                  
 @CNTI_CAMB_0002     TD_VC_003,                  
 @CSCO_MONE_0002     TD_VC_003,                  
 @CNFA_CAMB_0002     TD_NU_015_006,                  
 @CSTI_OPER_0002     TD_VC_003,                  
 @CNIM_MVTO_ORI2     TD_NU_016_004,                  
 @CNIM_MVTO_CNT2     TD_NU_016_004,                  
 @CSTI_AUXI_EMP2     TD_VC_001,                  
 @CSCO_AUXI_EMP2     TD_VC_020,                  
 @CSTI_DOCU_0002     TD_VC_003,                  
 @CSST_CNTA_NATU     TD_VC_003,                  
 @CSNU_DOCU_0002     TD_VC_020,                    
 @CDFE_DOCU_0002     TD_DT_001,                   
 @CDFE_ASTO_0001     TD_DT_001,                  
 @VSCO_MONE_VALI     TD_VC_003,  
 @VSCO_EMPR_EVAL     TD_VC_002  
                  
--- Inicializar-------------                  
                  
 Select @VSTI_AUXI_DCGA = Null                  
 Select @VSCO_AUXI_DCGA = Null                  
 Select @VSTI_AUXI_DCPE = Null                  
 Select @VSCO_AUXI_DCPE = Null                  
                   
                 
  -- OBTIENE EL ULTIMO SECUENCIAL                   
                  
 Select @VNNU_SECU = IsNull(MAX(NU_SECU), 0) + 1                  
 From TXMVTO_CNTB                  
 Where CO_EMPR = @ISCO_EMPR                  
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR                  
 And CO_UNID_CNTB = @ISCO_UNID_CNTB                    
 And CO_OPRC_CNTB = @ISCO_OPRC_CNTB                  
 And NU_ANNO      = @INNU_ANNO                  
 And NU_MESE      = @INNU_MESE                  
 And NU_ASTO      = @ISNU_ASTO              
                        
 /* Selecciona las cuenta de Ganacia y Perdida */                  
 Select @VSCO_MONE_CNTB = CO_MONE,                  
        @VSID_GANA_CAMB = ID_GANA_CAMB,                  
        @VSID_PERD_CAMB = ID_PERD_CAMB                   
 From TTCNTB_EMPR                  
 Where CO_EMPR = @ISCO_EMPR                  
 and NU_CNTB_EMPR = @INNU_CNTB_EMPR                  
                  
 Select @VSST_AUXI_EMPR = 'N'                  
 Select @VSCO_CNTA_GANA = t1.CO_CNTA_EMPR,                  
        @VSST_AUXI_EMPR = t2.ST_AUXI_EMPR                  
 From TTIDEN_CNTA t1, TMPLAN_ANNO t2                  
 Where t1.CO_EMPR = @ISCO_EMPR                   
 And t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR                   
 And t1.ID_CNTA = @VSID_GANA_CAMB                  
 And t2.CO_EMPR = t1.CO_EMPR                  
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR                  
                  
 If @VSST_AUXI_EMPR = 'S'                  
   Begin                  
     Select @VSTI_AUXI_DCGA = TI_AUXI_DCGA,                  
            @VSCO_AUXI_DCGA = CO_AUXI_DCGA                  
     From   TMPARA_CONT                  
     Where  CO_EMPR = @ISCO_EMPR                   
   End                  
                  
 Select @VSST_AUXI_EMPR = 'N'                  
 Select @VSCO_CNTA_PERD = t1.CO_CNTA_EMPR,                  
        @VSST_AUXI_EMPR = t2.ST_AUXI_EMPR                  
 From TTIDEN_CNTA t1, TMPLAN_ANNO t2                  
 Where t1.CO_EMPR = @ISCO_EMPR                   
 And t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR                   
 And t1.ID_CNTA = @VSID_PERD_CAMB                  
 And t2.CO_EMPR = t1.CO_EMPR                  
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR             
                 
 If @VSST_AUXI_EMPR = 'S'                  
   Begin                  
     Select @VSTI_AUXI_DCPE = TI_AUXI_DCPE,                  
            @VSCO_AUXI_DCPE = CO_AUXI_DCPE                  
     From TMPARA_CONT                  
     Where CO_EMPR = @ISCO_EMPR                   
   End                  
                             
/*Seccion para cuentAs que tengan Auxiliar */                  
 Select @CNIM_ORIG_SALD = 0                  
 Select @CNIM_SOLE_SALD = 0                  
 Select @VNIM_ORIG_MVTO = 0                  
 Select @VNIM_SOLE_MVTO = 0                  
 Select @VNTO_CNTA_GANA = 0                  
 Select @VNTO_CNTA_PERD = 0                  
 Select @VNTO_GANA_PEND = 0                  
 Select @VNTO_PERD_PEND = 0                  
 Select @VNTO_SALD_ORIG = 0                   
 Select @VNTO_SALD_SOLES  = 0          
 Select @VNTO_AJUS = 0                  
                   
 Create Table #TWMVTO_CNTB             
 ( CO_EMPR Varchar(2) NULL,             
 NU_CNTB_EMPR Int NULL,             
 CO_UNID_CNTB Varchar(3) NULL,             
 CO_OPRC_CNTB Varchar(3) NULL,             
 NU_ANNO Int NULL,            
 NU_MESE Int NULL,                  
 NU_ASTO Varchar(10) NULL,             
 NU_SECU Int NULL,             
 FE_ASTO_CNTB DateTime NULL,             
 CO_CNTA_EMPR Varchar(20) NULL,             
 TI_AUXI_EMPR Varchar(1) NULL,             
 CO_AUXI_EMPR Varchar(20) NULL,             
 TI_DOCU Varchar(3) NULL,             
 NU_DOCU Varchar(20) NULL,                  
 FE_DOCU DateTime NULL,             
 TI_CAMB Varchar(3) NULL,             
 CO_MONE Varchar(3) NULL,             
 FA_CAMB Numeric(15, 6) NULL,             
 TI_OPER Varchar(3) NULL,             
 IM_MVTO_ORIG Numeric(16, 4) NULL,             
 IM_MVTO_CNTB Numeric(16, 4) NULL,             
 DE_GLOS Varchar(100) NULL,             
 SI_MVTO_CNTB Varchar(3) NULL,          
 NO_GIRA Varchar(100) NULL,             
 ST_GEST Varchar(1) NULL,             
 ST_REDO Varchar(1) NULL,             
 ST_DIFE_CAMB Varchar(1) NULL,             
 FA_CAMB_DIAR Numeric(15, 6) NULL)                  
            
 Create table #TWMVTO_CNT1                  
 (CO_EMPR       varchar(2) NULL,                  
  NU_CNTB_EMPR  integer NULL,                  
  FE_ASTO_CNTB  datetime NULL,                  
  TI_CAMB       varchar(3) NULL,                  
  CO_MONE       varchar(3) NULL,                  
  FA_CAMB       numeric(15,6) NULL,                  
  TI_OPER       varchar(3) NULL,                  
  IM_MVTO_ORIG  numeric(16,4) NULL,                  
  IM_MVTO_CNTB  numeric(16,4) NULL,                  
  CO_CNTA_EMPR  Varchar(20) NULL,             
  TI_AUXI_EMPR  varchar(1) NULL,                  
  CO_AUXI_EMPR  varchar(20) NULL,                  
  TI_DOCU       varchar(3) NULL,                  
  ST_CNTA_NATU  varchar(3) NULL,                  
  NU_DOCU       varchar(20) NULL,                  
  FE_DOCU       datetime NULL,                 
  FE_ASTO_0001  DateTime NULL)                  
                  
 ---- #TWMVTO_CNT2 guarda data para cursor CU_TXMVTO_CNTB_I10_1                  
 Create table #TWMVTO_CNT2                  
 (CO_CNTA_EMP2  Varchar(20) NULL,             
  TI_AUXI_EMP2  varchar(1) NULL,                  
  CO_AUXI_EMP2  varchar(20) NULL,                  
  TI_DOC2       varchar(3) NULL,                  
  NU_DOC2       varchar(20) NULL,                  
  FE_DOCU       datetime NULL,                   
  TI_OPER_0002  varchar(3) NULL,                  
  IM_MVTO_ORI2  numeric(16,4) NULL,                  
  IM_MVTO_CNT2  numeric(16,4)  NULL,                
  FE_ASTO_0001  DateTime NULL)                  
            
 Select @VSCO_MONE_VALI = ''  
  
 Select @VSID_0006 = ID_0006, @VSID_BNCO = ID_BNCO,  
 @VSCO_MONE_VALI = IsNull(CO_MONE, '')             
 From TTCNTB_EMPR             
 Where CO_EMPR = @ISCO_EMPR             
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR             
            
 Declare CU_TXMVTO_CNTB_Q41_1 Cursor For             
 Select t1.CO_CNTA_EMPR, t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.TI_DOCU, t1.NU_DOCU            
 From TXMVTO_CNTB t1, TMPLAN_ANNO t2   
 Where t1.CO_EMPR = @ISCO_EMPR            
 And t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR             
 And t1.CO_UNID_CNTB = @ISCO_UNID_CNTB            
 And t1.CO_OPRC_CNTB = @ISCO_OPRC_CNTB            
 And t1.NU_ANNO = @INNU_ANNO            
 And t1.NU_MESE = @INNU_MESE            
 And t1.NU_ASTO = @ISNU_ASTO           
 And t1.SI_MVTO_CNTB =  'APR'            
 And t1.ST_DIFE_CAMB =  'N'           
 And t2.CO_EMPR = t1.CO_EMPR          
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR          
 And t2.ST_DOCU_CNTB = 'S'  
 And t2.ST_CNTA_MONE = 'S'   
 And t2.CO_MONE != @VSCO_MONE_VALI  
 And t2.ST_CNTA_CTES = 'DOC'   
            
 Open CU_TXMVTO_CNTB_Q41_1                  
 Fetch CU_TXMVTO_CNTB_Q41_1 Into @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU            
 While @@Fetch_status = 0                  
   Begin          
  
---- SE AUMENTO ESTAS LINEA CASO CANCELACIONES PARCIALES  
 Select @VSCO_EMPR_EVAL = ''  
  
 Select @VSCO_EMPR_EVAL = CO_EMPR   
 From TXMVTO_CNTB  
 Where CO_EMPR = @ISCO_EMPR   
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR   
 And NU_ANNO      =  @INNU_ANNO  
 And NU_MESE      =  @INNU_MESE  
 And CO_CNTA_EMPR = @CSCO_CNTA_EMPR   
 And TI_AUXI_EMPR = @CSTI_AUXI_EMPR   
 And CO_AUXI_EMPR = @CSCO_AUXI_EMPR  
 And TI_DOCU = @CSTI_DOCU   
 And NU_DOCU = @CSNU_DOCU  
 And SI_MVTO_CNTB = 'APR'  
 And ST_DIFE_CAMB = 'S'  
 And CO_UNID_CNTB + CO_OPRC_CNTB + NU_ASTO != @ISCO_UNID_CNTB + @ISCO_OPRC_CNTB + @ISNU_ASTO  
            
 If Rtrim(Ltrim(IsNull(@VSCO_EMPR_EVAL, ''))) = '' --- SI NO HAY EN OTRA CANCELACION ENTONCES INSERTA  
 Begin   
 Insert into #TWMVTO_CNT1 (CO_EMPR, NU_CNTB_EMPR, FE_ASTO_CNTB, TI_CAMB,                  
 CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                   
 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, FE_ASTO_0001, ST_CNTA_NATU)                  
 Select CO_EMPR, @INNU_CNTB_EMPR, @VDFE_VOUC, TI_CAMB, CO_MONE,                  
 FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                  
 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, FE_ASTO_CNTB, TI_CAMB            
 From  TXMVTO_CNTB             
 Where CO_EMPR = @ISCO_EMPR                   
  And NU_CNTB_EMPR = @INNU_CNTB_EMPR                   
  And NU_ANNO = @INNU_ANNO                   
  And NU_MESE  <= @INNU_MESE                   
  And CO_CNTA_EMPR  = @CSCO_CNTA_EMPR                   
  And TI_AUXI_EMPR = @CSTI_AUXI_EMPR                   
  And CO_AUXI_EMPR = @CSCO_AUXI_EMPR                   
  And TI_DOCU = @CSTI_DOCU                   
  And NU_DOCU = @CSNU_DOCU                  
  And SI_MVTO_CNTB  = 'APR'                   
  And ST_DIFE_CAMB = 'N'                
  Order By TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU                         
 End  
            
 Fetch CU_TXMVTO_CNTB_Q41_1 Into @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU            
 End                
 Close CU_TXMVTO_CNTB_Q41_1                  
 Deallocate CU_TXMVTO_CNTB_Q41_1                  
            
 ---- Cursor para convertir importe original en importe moneda contabilidad                  
 Declare CU_TXMVTO_CNTB_Q41_2 Cursor                  
 For                   
   Select CO_EMPR, NU_CNTB_EMPR, FE_ASTO_CNTB, TI_CAMB, CO_MONE, FA_CAMB,                  
          TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                  
          TI_DOCU, NU_DOCU, FE_DOCU, FE_ASTO_0001, ST_CNTA_NATU                  
   From  #TWMVTO_CNT1                  
   Order by TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU                  
                  
 Open CU_TXMVTO_CNTB_Q41_2                  
 Fetch CU_TXMVTO_CNTB_Q41_2 Into @CSCO_EMPR_0002, @CNNU_CNTB_EMP2, @VDFE_ASTO_CNT2,                  
 @CNTI_CAMB_0002, @CSCO_MONE_0002, @CNFA_CAMB_0002, @CSTI_OPER_0002, @CNIM_MVTO_ORI2,                  
 @CNIM_MVTO_CNT2, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMP2, @CSCO_AUXI_EMP2, @CSTI_DOCU_0002, @CSNU_DOCU_0002,                  
 @CDFE_DOCU, @CDFE_ASTO_0001, @CSST_CNTA_NATU            
                  
 While @@Fetch_status = 0                  
   Begin                  
     ---- Convierte importe original en importe moneda contabilidad                   
                  
/*     Exec SP_CONV_MONE_Q01  @CSCO_EMPR_0002, @CSCO_MONE_0002, @CNNU_CNTB_EMP2, @CNTI_CAMB_0002,                  
       @CSST_CNTA_NATU, @CNFA_CAMB_0002, @VDFE_ASTO_CNT2, @CNIM_MVTO_ORI2, 'P', @VNIM_MVTO_ORI2 Output                  
                
     If @CNIM_MVTO_ORI2 = 0.00            */      
       Select @VNIM_MVTO_ORI2 = @CNIM_MVTO_CNT2                  
                  
     ---- Inserta tabla temporal #TWMVTO_CNT2, campos serabn usados en el cursor CU_TXMVTO_CNTB_I10_1                  
     Insert Into #TWMVTO_CNT2 Values(@CSCO_CNTA_EMPR, @CSTI_AUXI_EMP2, @CSCO_AUXI_EMP2, @CSTI_DOCU_0002,                  
     @CSNU_DOCU_0002, @CDFE_DOCU, @CSTI_OPER_0002, @CNIM_MVTO_ORI2, @VNIM_MVTO_ORI2, @CDFE_ASTO_0001 )                   
                  
 Fetch CU_TXMVTO_CNTB_Q41_2 Into @CSCO_EMPR_0002, @CNNU_CNTB_EMP2, @VDFE_ASTO_CNT2,                  
 @CNTI_CAMB_0002, @CSCO_MONE_0002, @CNFA_CAMB_0002, @CSTI_OPER_0002, @CNIM_MVTO_ORI2,                  
 @CNIM_MVTO_CNT2, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMP2, @CSCO_AUXI_EMP2, @CSTI_DOCU_0002, @CSNU_DOCU_0002,                  
 @CDFE_DOCU, @CDFE_ASTO_0001, @CSST_CNTA_NATU                  
 End /* While @@Fetch_status =0 */                  
                  
 Close CU_TXMVTO_CNTB_Q41_2                  
 Deallocate CU_TXMVTO_CNTB_Q41_2                  
            
            
-- Select @VSST_FLAG = 'N'                
 Declare CU_TXMVTO_CNTB_Q41_3 Cursor                  
 For                   
   Select   CO_CNTA_EMP2, TI_DOC2, NU_DOC2, Max(FE_DOCU), TI_AUXI_EMP2, CO_AUXI_EMP2,                  
     Isnull(SUM( ( ROUND(((ASCII(TI_OPER_0002)/67)* Isnull(IM_MVTO_ORI2, 0)),2) - ROUND(( (65/ASCII(TI_OPER_0002))* Isnull(IM_MVTO_ORI2, 0) ),2))), 0),                  
     Isnull(SUM( ( ROUND(((ASCII(TI_OPER_0002)/67)* Isnull(IM_MVTO_CNT2, 0)),2) - ROUND(( (65/ASCII(TI_OPER_0002))* Isnull(IM_MVTO_CNT2, 0) ),2))), 0),                 
     Min(FE_ASTO_0001)                    
   From #TWMVTO_CNT2                  
   Group By CO_CNTA_EMP2, TI_AUXI_EMP2, CO_AUXI_EMP2, TI_DOC2, NU_DOC2            
   Order By CO_CNTA_EMP2, TI_AUXI_EMP2, CO_AUXI_EMP2, TI_DOC2, NU_DOC2            
                  
 Open CU_TXMVTO_CNTB_Q41_3                  
 Fetch CU_TXMVTO_CNTB_Q41_3 Into @CSCO_CNTA_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,                   
 @CNIM_ORIG_SALD, @CNIM_SOLE_SALD, @CDFE_ASTO_0001                  
                   
 While @@Fetch_status = 0                  
   Begin                  
                  
 -- EVALUA QUE SOLO GRABE PARA LAS CANCELACIONES                 
 If @CDFE_ASTO_0001 != @IDFE_ASTO_CNTB Or @CNIM_ORIG_SALD = 0               
 Begin                 
                
/*-------------INICIO CALCULO FACTOR DE CAMBIO (SOLO INGRESA 1 VEZ)------------------------*/                
            
---- Si hay amarre con Cuentas de Dif De cambio en la TMPLAN_EMPR. Toma esas cuentas------------                  
 Select @VSCO_GANA_DIFE = Ltrim(Rtrim(IsNull(CO_GANA_DIFE,''))),                  
        @VSCO_PERD_DIFE = Ltrim(Rtrim(IsNull(CO_PERD_DIFE,'')))                  
 From  TMPLAN_EMPR                  
 Where CO_EMPR = @ISCO_EMPR                  
 And   CO_CNTA_EMPR = @CSCO_CNTA_EMPR                  
                  
 If @VSCO_GANA_DIFE <> '' And @VSCO_PERD_DIFE <> ''                  
   Begin                  
     Select @VSCO_CNTA_GANA = @VSCO_GANA_DIFE        
     Select @VSCO_CNTA_PERD = @VSCO_PERD_DIFE                  
   End            
                
-- If @VSST_FLAG = 'N'                 
-- Begin                 
 Select @VSCO_MONE_CNTA = CO_MONE                  
 From TMPLAN_EMPR                  
 Where CO_EMPR = @ISCO_EMPR                  
 and CO_CNTA_EMPR = @CSCO_CNTA_EMPR                  
 And NU_ANNO = 9999        
                 
/*----------- Para obtener el factor de la moneda de la cuenta -------*/                  
 SELECT @VNFA_CMPR_CNTA = FA_CMPR_OFIC, @VNFA_VNTA_CNTA = FA_VNTA_OFIC                  
 FROM TCFACT_CAMB                  
 WHERE CO_MONE = @VSCO_MONE_CNTA                  
 And   FE_CAMB = @CDFE_ASTO_0001                
                  
/*------------- Para obtener el factor de la moneda de la contabilidad ----------*/                  
 SELECT @VNFA_CMPR_CNTB = FA_CMPR_OFIC, @VNFA_VNTA_CNTB = FA_VNTA_OFIC                   
 FROM TCFACT_CAMB                  
 WHERE CO_MONE = @VSCO_MONE_CNTB                  
 And   FE_CAMB = @CDFE_ASTO_0001                
                  
 if @VNFA_CMPR_CNTA is NULL                  
   Select @VNFA_CMPR_CNTA = 1.00                  
                  
 if @VNFA_VNTA_CNTA is NULL                  
   Select @VNFA_VNTA_CNTA = 1.00                  
                  
 if @VNFA_CMPR_CNTB is NULL                  
   Select @VNFA_CMPR_CNTB = 1.00                  
                  
 if @VNFA_VNTA_CNTB is NULL                  
   Select @VNFA_VNTA_CNTB = 1.00                  
                  
 Select @VNFA_CMPR_REFE = @VNFA_CMPR_CNTA / @VNFA_CMPR_CNTB                  
 Select @VNFA_VNTA_REFE = @VNFA_VNTA_CNTA / @VNFA_VNTA_CNTB                  
                  
 If @VNFA_CMPR_REFE IS NULL                  
  Select @VNFA_CMPR_REFE = 1.00                  
                  
 If @VNFA_VNTA_REFE IS NULL                  
  Select @VNFA_VNTA_REFE = 1.00                  
                
 Select @VSST_FLAG = 'S'                
                 
-- End                 
                
/*-----FIN CALCULO FACTOR DE CAMBIO -----------------*/                
                
     Select @VNTO_SALD_ORIG = 0                  
     Select @VNTO_SALD_SOLES  = 0                  
     Select @VNTO_AJUS = 0                  
     Select @VNTO_SALD_ORIG = ROUND(@CNIM_ORIG_SALD,2)                  
     Select @VNTO_SALD_SOLES  = ROUND(@CNIM_SOLE_SALD,2)                  
                  
     If @ISST_CNTA_NATU = 'COM'                  
       Begin                  
         Select @VNTO_SALD_ORIG = @VNTO_SALD_ORIG * @VNFA_CMPR_REFE                  
       End                  
     Else                  
       Begin                  
         Select @VNTO_SALD_ORIG = @VNTO_SALD_ORIG * @VNFA_VNTA_REFE                  
       End                  
                  
     Select @VNTO_AJUS = ROUND(@VNTO_SALD_ORIG,2) - ROUND(@VNTO_SALD_SOLES,2)                  
                  
     If @VNTO_AJUS != 0.00                  
       Begin                   
         If( @VNTO_SALD_ORIG > 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )                   
           Begin                     
             Select @VNTO_AJUS = ROUND(@VNTO_SALD_SOLES,2) - ROUND(@VNTO_SALD_ORIG,2)                  
                        
             If @VNTO_AJUS > 0.00                  
               Begin                    
                  
                  -- @IDFE_ASTO_CNTB EL LUGAR DE  @VDFE_VOUC                  
                 Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + ROUND(@VNTO_AJUS,2)                  
                 /*Comentario : Insercion del Asiento de Ajuste*/                  
                 Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                  
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                  
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                   
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                   
                 FA_CAMB_DIAR)                  
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                  
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                  
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                  
                 'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR','  ', 'N', 'N', 'S', 1.000000)                  
                 Select @VNNU_SECU = @VNNU_SECU + 1                  
               End /* If @VNTO_AJUS > 0 */           
                  
             If @VNTO_AJUS < 0.00                  
               Begin                   
                 /*Comentario : Insercion del Asiento de Ajuste*/                  
                 Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                  
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU,FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                  
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU,  FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                  
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                  
                 FA_CAMB_DIAR)                  
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                  
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                  
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,'PAC', @VSCO_MONE_CNTB, 1.000000,                   
                 'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO','APR', '  ', 'N', 'N', 'S', 1.000000)                  
                 Select @VNNU_SECU = @VNNU_SECU + 1                  
                 Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - abs(ROUND(@VNTO_AJUS,2))                  
          End /* If @VNTO_AJUS < 0 */                  
           End  /* If( @VNTO_SALD_ORIG > 0 ) And ( @VNTO_SALD_SOLES > 0 ) */                  
                     
         If( @VNTO_SALD_ORIG > 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                  
           Begin                  
             Select @VNTO_AJUS = abs(ROUND(@VNTO_SALD_SOLES,2)) + ROUND(@VNTO_SALD_ORIG,2)                  
             If @VNTO_AJUS > 0.00                  
               Begin                  
                 /*Comentario : Insercion del Asiento de Ajuste */                  
                 Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                  
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                  
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                  
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                    
                 FA_CAMB_DIAR)                  
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                  
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                  
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB,                  
                 1.000000, 'CAR', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S',              
                 1.000000)                  
                 Select @VNNU_SECU = @VNNU_SECU + 1                  
                 Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - ROUND(@VNTO_AJUS,2)                  
               End /* If @VNTO_AJUS > 0 */                  
                           
             If @VNTO_AJUS < 0.00                  
               Begin                  
               Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + abs(ROUND(@VNTO_AJUS,2))                  
                 /*Comentario : Insercion del Asiento de Ajuste*/                  
                 Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                  
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU,FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                  
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                    
                FA_CAMB_DIAR)                  
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                  
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                  
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,'PAC', @VSCO_MONE_CNTB, 1.000000,                  
                 'ABO', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR','  ', 'N', 'N', 'S', 1.000000)                  
                 Select @VNNU_SECU = @VNNU_SECU + 1                  
               End /* If @VNTO_AJUS < 0 */                  
           End /*If( @VNTO_SALD_ORIG > 0 ) And ( @VNTO_SALD_SOLES < 0 ) */                  
                  
         If( @VNTO_SALD_ORIG < 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )                  
           Begin                  
             Select @VNTO_AJUS =  (0.00 - ROUND(@VNTO_SALD_SOLES,2)) + ROUND(@VNTO_SALD_ORIG,2)                  
             If @VNTO_AJUS > 0.00                  
               Begin                  
               /*Comentario : Insercion del Asiento de Ajuste*/                  
               Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                  
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                  
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB,                  
               DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                  
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                  
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                  
               'CAR', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000)                  
               Select @VNNU_SECU = @VNNU_SECU + 1                  
               Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - ROUND(@VNTO_AJUS,2)                      
             End /* If @VNTO_AJUS > 0 */                  
                  
           If @VNTO_AJUS < 0.00                  
             Begin                  
               Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + abs(ROUND(@VNTO_AJUS,2))                  
               /*Comentario : Insercion del Asiento de Ajuste*/                  
               Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                  
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                  
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB,                  
               DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                  
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                  
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                  
               'ABO', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000)                  
               Select @VNNU_SECU = @VNNU_SECU + 1                  
             End /* If @VNTO_AJUS < 0      */                  
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                  
                  
       If( @VNTO_SALD_ORIG < 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                  
         Begin                  
           Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2) - ROUND(@VNTO_SALD_ORIG,2)                  
           If @VNTO_AJUS > 0.00                  
             Begin                  
               Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + ROUND(@VNTO_AJUS,2)                  
               /*Comentario : Insercion del Asiento de Ajuste*/                  
               Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                  
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                  
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                  
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                  
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                  
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                 
               'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR',  '  ', 'N', 'N', 'S', 1.000000)                  
               Select @VNNU_SECU = @VNNU_SECU + 1                  
             End /* If @VNTO_AJUS > 0 */                  
                  
           If @VNTO_AJUS < 0.00                  
             Begin                  
               /*Comentario : Insercion del Asiento de Ajuste*/                  
           Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                  
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                  
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                  
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                  
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                  
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                  
               'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000)                  
               Select @VNNU_SECU = @VNNU_SECU + 1                  
               Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - abs(ROUND(@VNTO_AJUS,2))                      
             End /* If @VNTO_AJUS < 0      */                  
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                        
                  
       If( @VNTO_SALD_ORIG = 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )                  
         Begin                  
           Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2)                  
           If @VNTO_AJUS > 0.00                  
             Begin                  
             Select @VNTO_CNTA_PERD = @VNTO_CNTA_PERD + ROUND(@VNTO_AJUS,2)                      
               /*Comentario : Insercion del Asiento de Ajuste*/                  
               Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                  
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                  
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                  
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                  
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                  
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                  
               'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S',1.000000)                  
               Select @VNNU_SECU = @VNNU_SECU + 1                  
             End                  
         End /*If( @VNTO_SALD_ORIG = 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                   
                  
       If( @VNTO_SALD_ORIG = 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                  
         Begin              
           Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2)                  
           If @VNTO_AJUS < 0.00           
          Begin                  
               /* Insercion del Asiento de Ajuste*/                  
               Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                  
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                  
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                  
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                  
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                  
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                  
               'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000)                  
               Select @VNNU_SECU = @VNNU_SECU + 1                
               Select @VNTO_CNTA_GANA = @VNTO_CNTA_GANA - abs(ROUND(@VNTO_AJUS,2))                  
             End                   
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                  
     End    /*If @VNTO_AJUS != 0 */                  
            
            
/* Insercion de cuenta de pTrdida en diferencia de cambio      */                  
 If @VNTO_CNTA_PERD != 0.00                  
   Begin                        
     If @VNTO_CNTA_PERD > 0.00                  
       Begin                  
         Select @VSTI_OPER = 'CAR'                  
       End                          
     Else If @VNTO_CNTA_PERD < 0.00                  
       Begin                  
         Select @VSTI_OPER = 'ABO'                  
       End                  
                  
     /*Comentario : Insercion del Asiento de Ajuste*/                  
     Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,                  
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                  
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                   
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                  
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                  
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_PERD, @VSTI_AUXI_DCPE, @VSCO_AUXI_DCPE, NULL, NULL,                  
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_CNTA_PERD), 'AJUST x DIF.CAMBIO',                  
     'APR', '  ', 'N', 'N', 'S', 1.000000)                  
--**     Select @VNNU_SECU = @VNNU_SECU + 1                  
   End                  
                  
/* Insercion de cuenta de pTrdida en diferencia de cambio Pendiente */                  
 If @VNTO_PERD_PEND != 0.00                  
   Begin                        
     If @VNTO_PERD_PEND > 0.00                  
       Begin                  
         Select @VSTI_OPER = 'CAR'                  
       End                          
     Else If @VNTO_PERD_PEND < 0.00                  
       Begin                  
         Select @VSTI_OPER = 'ABO'                  
       End                  
                  
     /*Comentario : Insercion del Asiento de Ajuste*/                  
     Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,                  
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                  
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                   
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                  
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                  
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_PERD, @VSTI_AUXI_DCPE, @VSCO_AUXI_DCPE, NULL, NULL,                  
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_PERD_PEND), 'AJUST x DIF.CAMBIO',                  
     'APR', '  ', 'N', 'N', 'S', 1.000000)                  
--**     Select @VNNU_SECU = @VNNU_SECU + 1                   
   End                  
                  
/* Insercion de cuenta de ganancia en diferencia de cambio */                  
 If @VNTO_CNTA_GANA != 0.00                  
   Begin                  
     If @VNTO_CNTA_GANA > 0.00                  
       Begin                  
         Select @VSTI_OPER = 'CAR'                  
       End                          
     Else If @VNTO_CNTA_GANA < 0.00                  
       Begin                  
         Select @VSTI_OPER = 'ABO'                  
       End                  
     /*Comentario :Insercion del Asiento de Ajuste*/                  
     Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,NU_MESE,                  
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                  
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                  
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                  
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                  
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_GANA, @VSTI_AUXI_DCGA, @VSCO_AUXI_DCGA, NULL, NULL,                  
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_CNTA_GANA), 'AJUST x DIF.CAMBIO',                  
     'APR', '  ', 'N', 'N', 'S', 1.000000)                  
   End                  
                  
/* Insercion de cuenta de ganancia en diferencia de cambio */                  
 If @VNTO_GANA_PEND != 0.00                  
   Begin                  
     If @VNTO_GANA_PEND > 0.00                  
       Begin                  
         Select @VSTI_OPER = 'CAR'                  
       End                          
     Else If @VNTO_GANA_PEND < 0.00                  
       Begin                  
         Select @VSTI_OPER = 'ABO'                  
       End                  
     /*Comentario :Insercion del Asiento de Ajuste*/                  
     Insert Into #TWMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,NU_MESE,                  
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                  
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                  
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR)                  
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                  
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_GANA, @VSTI_AUXI_DCGA, @VSCO_AUXI_DCGA, NULL, NULL,                  
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_GANA_PEND), 'AJUST x DIF.CAMBIO',                  
     'APR', '  ', 'N', 'N', 'S', 1.000000)                  
   End                  
 Select @VNTO_GANA_PEND = 0            
 Select @VNTO_PERD_PEND = 0            
 Select @VNTO_CNTA_GANA = 0            
 Select @VNTO_CNTA_PERD = 0            
            
    If @VNTO_PERD_PEND != 0 Or @VNTO_CNTA_PERD != 0                 
      Select @VSCO_CNTA_AJUS = @VSCO_CNTA_PERD                
      
    If @VNTO_GANA_PEND != 0 Or @VNTO_CNTA_GANA != 0                 
      Select @VSCO_CNTA_AJUS = @VSCO_CNTA_GANA                
                   
    Exec SP_TXMVTO_CNTB_Q43 @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB,        
    @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE, @ISNU_ASTO, @VSCO_CNTA_AJUS, 'ORI', @VSID_GANA_CAMB, @VSID_PERD_CAMB,             
    @VNNU_SECU, @VNNU_SECU OUT            
            
    Select @VNNU_SECU = @VNNU_SECU +  1            
               
               
 End /*FIN  -- EVALUA QUE SOLO GRABE PARA LAS CANCELACIONES */                
                
 Fetch CU_TXMVTO_CNTB_Q41_3 Into @CSCO_CNTA_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,                   
 @CNIM_ORIG_SALD, @CNIM_SOLE_SALD, @CDFE_ASTO_0001                  
                  
 End /* While @@Fetch_status =0 */                  
 Close CU_TXMVTO_CNTB_Q41_3                  
 Deallocate CU_TXMVTO_CNTB_Q41_3                  
                         
 Select @VNTO_CARG_0001 = IsNull( SUM( ( ROUND( ((ASCII(TI_OPER)/67) * Isnull(IM_MVTO_CNTB, 0)), 2))), 0),            
 @VNTO_ABON_0001 = IsNull( SUM( ( ROUND( ((65/ASCII(TI_OPER)) * Isnull(IM_MVTO_CNTB, 0)), 2))), 0)            
 From #TWMVTO_CNTB            
            
 Select @VNTO_CARG_0001 = @INTO_CARG + IsNull(@VNTO_CARG_0001, 0)            
 Select @VNTO_ABON_0001 = @INTO_ABON + IsNull(@VNTO_ABON_0001, 0)            
            
If @ISTI_REPO = 'P'  
 Begin    
Select  T1.NU_SECU 'SECUENCIAL', T1.CO_CNTA_EMPR 'CUENTA', T3.DE_CNTA_EMPR 'DESC CUENTA',   
T1.TI_AUXI_EMPR 'TIPO AUXILIAR',            
 T1.CO_AUXI_EMPR 'CODIGO AUXILIAR', T1.TI_DOCU 'DOCUMENTO', T1.NU_DOCU 'NUMERO DOC.',            
 Convert(Varchar(10), T1.FE_DOCU,103) 'FECHA DOC.', T1.TI_OPER 'OPERACION', T1.CO_MONE 'MONEDA',            
 T1.FA_CAMB 'FACTOR CAMBIO', T1.IM_MVTO_ORIG 'IMPORTE ORIGEN', T1.CO_ORDE_SERV 'ORDEN SERVICIO',            
 T1.TI_DOCU_REFE 'DOC. REFERENCIA', T1.NU_DOCU_REFE 'NUM.DOC.REFERENCIA',       
 (Select max(T2.DE_GLOS) 
  from TXMVTO_CNTB T2
  Where T1.CO_EMPR = T2.CO_EMPR       
  And  T1.NU_CNTB_EMPR  = T2.NU_CNTB_EMPR        
  And  T1.CO_UNID_CNTB  = T2.CO_UNID_CNTB        
  And  T1.CO_OPRC_CNTB  = T2.CO_OPRC_CNTB        
  And  T1.NU_ANNO  = T2.NU_ANNO          
  And  T1.NU_MESE  = T2.NU_MESE          
  And  T1.NU_ASTO  = T2.NU_ASTO       
  And  T2.ST_GEST = 'N'      
  And  T2.ST_REDO = 'N'      
  And  T2.ST_DIFE_CAMB = 'N'  
  And  T2.SI_MVTO_CNTB In ('APR', 'DIG')     
 ) 'GLOSA',      
 T1.IM_MVTO_CNTB 'IMPORTE CONTABLE', T1.CO_CLAV_TAOR 'ORIGEN', T1.NO_GIRA 'GIRADO A',            
 @VNTO_CARG_0001 'TOTAL CARGO', @VNTO_ABON_0001 'TOTAL ABONO'
 From TXMVTO_CNTB T1      
 inner join TMPLAN_EMPR T3  on t3.co_empr=t1.co_empr and t3.CO_CNTA_EMPR=t1.CO_CNTA_EMPR
 Where T1.CO_EMPR = @ISCO_EMPR            
 And   T1.NU_CNTB_EMPR = @INNU_CNTB_EMPR            
 And   T1.CO_UNID_CNTB = @ISCO_UNID_CNTB            
 And   T1.CO_OPRC_CNTB = @ISCO_OPRC_CNTB            
 And   T1.NU_ANNO = @INNU_ANNO            
 And   T1.NU_MESE = @INNU_MESE            
 And   T1.NU_ASTO = @ISNU_ASTO            
 And   T1.SI_MVTO_CNTB In ('APR', 'DIG')            
 Union All            
 Select  T1.NU_SECU 'SECUENCIAL', T1.CO_CNTA_EMPR 'CUENTA',
T3.DE_CNTA_EMPR 'DESC CUENTA' ,  
 T1.TI_AUXI_EMPR 'TIPO AUXILIAR',            
 T1.CO_AUXI_EMPR 'CODIGO AUXILIAR', T1.TI_DOCU 'DOCUMENTO', T1.NU_DOCU 'NUMERO DOC.',            
 Convert(Varchar(10), T1.FE_DOCU,103) 'FECHA DOC.', T1.TI_OPER 'OPERACION', T1.CO_MONE 'MONEDA',            
 T1.FA_CAMB 'FACTOR CAMBIO', T1.IM_MVTO_ORIG 'IMPORTE ORIGEN', NULL 'ORDEN SERVICIO',            
 NULL 'DOC. REFERENCIA', NULL 'NUM.DOC.REFERENCIA',       
 (Select max(T2.DE_GLOS) from #TWMVTO_CNTB T2      
  Where T1.CO_EMPR = T2.CO_EMPR       
  And  T1.NU_CNTB_EMPR  = T2.NU_CNTB_EMPR        
  And  T1.CO_UNID_CNTB  = T2.CO_UNID_CNTB        
  And  T1.CO_OPRC_CNTB  = T2.CO_OPRC_CNTB        
  And  T1.NU_ANNO  = T2.NU_ANNO          
  And  T1.NU_MESE  = T2.NU_MESE            
  And  T1.NU_ASTO  = T2.NU_ASTO       
  And  T2.ST_GEST = 'N'      
  And  T2.ST_REDO = 'N'      
  And  T2.ST_DIFE_CAMB = 'N' ) 'GLOSA',      
 T1.IM_MVTO_CNTB 'IMPORTE CONTABLE', NULL 'ORIGEN', NULL 'GIRADO A',             
 @VNTO_CARG_0001 'TOTAL CARGO', @VNTO_ABON_0001 'TOTAL ABONO'
 From #TWMVTO_CNTB T1      
 inner join TMPLAN_EMPR T3  on t3.co_empr=t1.co_empr and t3.CO_CNTA_EMPR=t1.CO_CNTA_EMPR
 Order By 1            
End  
  
If @ISTI_REPO = 'T'  
 Begin    
Select  T1.NU_SECU 'SECUENCIAL', T1.CO_CNTA_EMPR 'CUENTA', 
T3.DE_CNTA_EMPR 'DESC CUENTA' ,
T1.TI_AUXI_EMPR 'TIPO AUXILIAR',            
 T1.CO_AUXI_EMPR 'CODIGO AUXILIAR', T1.TI_DOCU 'DOCUMENTO', T1.NU_DOCU 'NUMERO DOC.',            
 Convert(Varchar(10), T1.FE_DOCU,103) 'FECHA DOC.', T1.TI_OPER 'OPERACION', T1.CO_MONE 'MONEDA',            
 T1.FA_CAMB 'FACTOR CAMBIO', T1.IM_MVTO_ORIG 'IMPORTE ORIGEN', T1.CO_ORDE_SERV 'ORDEN SERVICIO',            
 T1.TI_DOCU_REFE 'DOC. REFERENCIA', T1.NU_DOCU_REFE 'NUM.DOC.REFERENCIA',       
 t1.DE_GLOS 'GLOSA',      
 T1.IM_MVTO_CNTB 'IMPORTE CONTABLE', T1.CO_CLAV_TAOR 'ORIGEN', T1.NO_GIRA 'GIRADO A',            
 @VNTO_CARG_0001 'TOTAL CARGO', @VNTO_ABON_0001 'TOTAL ABONO'                                     
 From TXMVTO_CNTB T1      
 inner join TMPLAN_EMPR T3  on t3.co_empr=t1.co_empr and t3.CO_CNTA_EMPR=t1.CO_CNTA_EMPR
 Where T1.CO_EMPR = @ISCO_EMPR            
 And   T1.NU_CNTB_EMPR = @INNU_CNTB_EMPR            
 And   T1.CO_UNID_CNTB = @ISCO_UNID_CNTB            
 And   T1.CO_OPRC_CNTB = @ISCO_OPRC_CNTB            
 And   T1.NU_ANNO = @INNU_ANNO            
 And   T1.NU_MESE = @INNU_MESE            
 And   T1.NU_ASTO = @ISNU_ASTO            
 And   T1.SI_MVTO_CNTB In ('APR', 'DIG')            
 Union All            
 Select  T1.NU_SECU 'SECUENCIAL', T1.CO_CNTA_EMPR 'CUENTA',
 T3.DE_CNTA_EMPR 'DESC CUENTA', 
 T1.TI_AUXI_EMPR 'TIPO AUXILIAR',            
 T1.CO_AUXI_EMPR 'CODIGO AUXILIAR', T1.TI_DOCU 'DOCUMENTO', T1.NU_DOCU 'NUMERO DOC.',            
 Convert(Varchar(10), T1.FE_DOCU,103) 'FECHA DOC.', T1.TI_OPER 'OPERACION', T1.CO_MONE 'MONEDA',            
 T1.FA_CAMB 'FACTOR CAMBIO', T1.IM_MVTO_ORIG 'IMPORTE ORIGEN', NULL 'ORDEN SERVICIO',            
 NULL 'DOC. REFERENCIA', NULL 'NUM.DOC.REFERENCIA',       
 t1.DE_GLOS 'GLOSA',      
 T1.IM_MVTO_CNTB 'IMPORTE CONTABLE', NULL 'ORIGEN', NULL 'GIRADO A',             
 @VNTO_CARG_0001 'TOTAL CARGO', @VNTO_ABON_0001 'TOTAL ABONO'
 From #TWMVTO_CNTB T1      
 inner join TMPLAN_EMPR T3  on t3.co_empr=t1.co_empr and t3.CO_CNTA_EMPR=t1.CO_CNTA_EMPR
 Order By 1            
End  
                  
Return                  
/*-------------------------------- Fin -----------------------------*/  
  


GO
